<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>比较运算符</title>
    <style>
        span{
            color: red;
        }
    </style>
</head>
<body>
<h4> 比较运算符</h4>
<p>
比较运算符： <br>
> ： 左边是否大于右边 <br>
<： 左边是否小于右边 <br>
>=： 左边是否大于或等于右边 <br>
<=： 左边是否小于或等于右边 <br>
==： 左右两边值是否相等 <br>
===： 左右两边是否类型和值都相等 <br>
!==： 左右两边是否不全等 <br>
比较结果为boolean(布尔)类型，即只会得到 true 或 false
</p>
<p>
对比： <br>
= 单等是赋值 <br>
== 是判断 <br>
=== 是全等 <br>
<span>开发中判断是否相等，强烈推荐使用 ===</span>
</p>
<hr>

<h3>有几点特别注意</h3>
<p>
字符串比较，是比较的字符对应的ASCII码         <br>
从左往右依次比较                            <br>
如果第一位一样再比较第二位，以此类推          <br>
比较的少，了解即
</p>
<p>
NaN不等于任何值，包括它本身                 <br>
涉及到"NaN“ 都是false                     <br>
</p>
<p>
尽量不要比较小数，因为小数有精度问题
</p>
<p>
不同类型之间比较会发生隐式转换                          <br>
最终把数据隐式转换转成number(数字)类型再比较                   <br>
所以开发中，如果进行准确的比较我们更喜欢 === 或者 !==
</p>

<!--演示-->
<script>
    // 比较运算符有隐式转换 把'2' 转换为 2  双等号 只判断值
    console.log(2 == '2')  // true

    // === 全等 判断 值 和 数据类型都一样才行
    // 以后判断是否相等 请用 ===
    console.log(2 === '2')

    console.log(NaN === NaN) // NaN 不等于任何人，包括他自己

    // 不等于的情况 也一样
    console.log(2 !== '2')  // true  全比较
    console.log(2 != '2') // false   会转换类型,最终相当于 2 != 2

    console.log('字符串比较，是比较的字符对应的ASCII码. 而且是一个个字符 依次比较 ')
    // 比较是字符一一比较, 相等就比较下一个
    console.log('a' < 'b') // true
    console.log('aa' < 'ab') // true
    console.log('aba' < 'aac') // false  比较到第2个字符不相等了,就结束了
</script>
</body>
</html>